package it.unipd.dei.bd.icineasti.servlet.admin;

import it.unipd.dei.bd.icineasti.servlet.AbstractDatabaseServlet;

import it.unipd.dei.bd.icineasti.database.GetPalinsestiDatabase;
import it.unipd.dei.bd.icineasti.resource.Palinsesto;

import java.text.SimpleDateFormat;
import org.apache.commons.lang3.StringEscapeUtils; 

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;

/**
 * Servlet per il caricamento del palinsesto attuale di un evento in ambiente amministrativo
 * 
 * @author Mattia Coccato
 *
 */
public class GetPalinsestiServlet extends AbstractDatabaseServlet {



	public void doGet(HttpServletRequest req, HttpServletResponse res)
			throws ServletException, IOException {

		// imposta il tipo MIME della risposta
		res.setContentType("text/html");

		// ottiene un flusso di uscita per scrivere la risposta
		PrintWriter out = res.getWriter();

		Connection con = null;



		try {

			if (req.getParameter("codiceEvento") == null) return; // se non ho il codice film esco direttamente senza niente

			con = DS.getConnection();
			
			int codiceEvento = Integer.parseInt(req.getParameter("codiceEvento"));

			List<Palinsesto> palinsesti = new GetPalinsestiDatabase(con, codiceEvento).getPalinsesti();
			SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy HH:mm");

			for (Palinsesto p : palinsesti) {
				out.printf("<tr class=\"palinsestoRiga\"><td>%s</td><td>%s</td><td>%s</td></tr>",
					formatter.format(p.getDataOra()),
					(p.getIsIn3d())? "&#10003;" : "",
					(p.getModificabile())? "<a class=\"edit\" href=\"javascript:edit(" + p.getCodice() + ")\" />" 
								: "<a class=\"noEdit\" href=\"javascript:noEdit()\" />" );
					
			}

		} catch (NullPointerException e) {
			// messaggio d'errore
			out.printf("<p><center><font color=\"red\" size=\"+2\">Impossibile creare la connessione al database.</font></center></p>");
		} catch (SQLException e) {
			// messaggio d'errore
			out.printf("<p><center><font color=\"red\" size=\"+2\">Errore durante l'accesso al database: %s</font></center></p>",
			e.getMessage());
		} 
		
		

		// assicura che tutto il contenuto sia inviato
		//out.flush();

		// chiude il flusso di uscita
		//out.close();

	}

}
